.. :validated: 3.0.0

Обновление первого контроллера домена
==============================================================================

Все обновления между версиями возможны только в рамках одного исполнения: сертифицированного или несертифицированного. Для обновления до версии другого исполнения необходимо полностью развернуть систему заново.
    
Подготовка к обновлению
-------------------------------

Перед обновлением **ALD Pro** важно учитывать:

* Обновление продукта **ALD Pro** необходимо выполнять на контроллере домена от имени учетной записи администратора системы с высоким уровнем целостности.

* Обновления следует начинать с **первого** Контроллера Домена. Соответственно, все команды должны вводиться в его консоли (терминале).

* В **ALD Pro** реализовано разграничение доступа к функциям системы. При обновлении системы до актуальной версии администратору должна быть назначена роль **ALDPRO — Main Administrator** (пользователю **admin** роль назначается автоматически), также учетную запись администратора необходимо добавить в группу **ald trust admin**. Остальным пользователям (администраторам) системы соответствующие роли при необходимости нужно назначать в ручном режиме. Подробная информация о работе ролевого доступа находится в Справочном Центре Портала Управления в подразделе **Роли и права доступа** — **Роли в системе**.

* Программное обеспечение ОС должно совпадать на контроллерах домена, между которыми настроена репликация. Одновременная установка обновлений ОС и **ALD Pro** может привести к неработоспособности КД, подсистем и клиентов.

Версия ОС должна совпадать на контроллерах домена, между которыми настроена репликация. Если требуется установка оперативного обновления ОС, она должна выполняться перед обновлением **ALD Pro**. На первом КД необходимо:

1. убедиться, что в качестве источников пакетов для ОС зарегистрированы основной репозиторий (``main``) и репозиторий с обновлениями основного репозитория (``repository-update``), а в файле ``/etc/apt/sources.list`` указаны следующие строки, при необходимости — добавить, если имеются другие записи, то закомментировать их или удалить:

.. code-block:: bash

   deb http://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.7.uu2/repository-main 1.7_x86-64 main non-free contrib
   deb http://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.7.uu2/repository-update 1.7_x86-64 main non-free contrib   

2. обновить пакеты ОС, выполнив в терминале команду:

.. code-block:: bash

   sudo apt update && sudo apt install astra-update -y && sudo astra-update -A -r -T

3. для корректной работы функций репликации на КД необходимо импортировать новые конфигурации службы каталога, выполнив команды:

.. code-block:: bash

   sudo ipa-server-upgrade
   sudo ipactl restart

.. раздел ниже должен быть подправлен в рамках другой задачи - проверить

.. _check_before_update:

Проверки, которые необходимо выполнить до начала обновления
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Начиная с версии 3.0.0, утилита ``aldpro-server-install`` была доработана и дополнена механизмом автоматической валидации системных параметров и вводимых значений.

Перед установкой и обновлением контроллера домена утилита выполняет набор предварительных проверок, чтобы убедиться, что система соответствует установленным требованиям. По умолчанию валидация отключена и должна быть активирована с помощью флага ``--validate``. 

.. important::

    При обновлении первого КД с помощью утилиты ``aldpro-server-install`` с ключом ``--validate``, пункты 2, 6, 9, 10 из списка проверок ниже, выполняются автоматически. Обновление резервных КД выполняется через портал управления, поэтому для них необходимо выполнить все проверки.

Подробное описание механизма валидации параметров см. **Полезные инструкции** → **Инструкция по валидации параметров установки/обновления ALD Pro**.

Перед запуском обновления ОС на КД необходимо выполнить проверки:

1. Перезапуск служб **IPA**. Нужно убедиться, что не происходит задержек при перезапуске **FreeIPA** служб и что все службы стартуют успешно. Выполняется на первом КД и на резервных КД:

.. code-block:: bash

   ipactl restart

2. Проверка работоспособности основных служб ``krb5-kdc, dirsrv@DC-1-ALDPRO-LAN.service, bind9-pkcs11, aldpro-salt-minion, sssd``. Название службы dirsrv@DC-1-ALDPRO-LAN.service содержит имя домена. Нельзя начинать обновление, если какие-то из служб не функционируют. Выполняется на первом КД и резервных КД:

.. code-block:: bash
    
   systemctl status krb5-kdc dirsrv@DC-1-ALDPRO-LAN.service bind9-pkcs11 aldpro-salt-minion sssd
   kinit admin
   nslookup имя_хоста

3. Отключение служб, связанных с ролями: ``celerybeat`` и ``aldpro-roles-sweeper``. Отключение производится на контроллере домена путем остановки таймеров для соответствующих служб:

.. code-block:: bash

   systemctl disable --now celerybeat.service aldpro-roles-sweeper.timer

4. Проверка подключенных репозиториев, отключение лишних репозиториев. Необходимо убедиться, что при доступе к репозиториям не происходит ошибок и задержек. Выполняется на первом КД и резервных КД:

.. code-block:: bash

   Редактирование *.list файлов в каталоге /etc/apt/ и его подкаталогах
   apt update

5. Отключение плагина ``389ds - compat``. Позволяет ускорить выполнение обновления. Выполняется на первом КД и резервных КД:

.. code-block:: bash

   ipa-compat-manage status
   ipa-compat-manage disable

6. Деактивация ``winbind_krb5_locator``. Выполняется на резервных КД:

.. code-block:: bash

   ln -s -f /dev/null /usr/lib/x86_64-linux-gnu/krb5/plugins/libkrb5/winbind_krb5_locator.so

7. Отсутствие двух подсистем на одном хосте. Выполняется перед началом обновления первого контроллера домена.

8. Обновление модуля синхронизации не запущено одновременно с обновлением Системы. Обновление модуля синхронизации и миграцию его баз данных рекомендуется проводить после обновления всех резервных КД.

9. Проверка репликации и отсутствия односторонних соглашений о репликации:

.. code-block:: bash

   dsconf ldap://<имя_КД> -D 'cn=Directory Manager' repl-conflict list dc=ald,dc=company,dc=lan
   dsconf ldap://<имя_КД> -D 'cn=Directory Manager' repl-agmt list --suffix dc=ald,dc=company,dc=lan
   ds-replcheck online -D "cn=Directory Manager" -W -m ldap://<имя_КД_1> -r ldap://<имя_КД_2> -b "<dc=доменный,dc=суффикс>" # <имя_КД_1> и <имя_КД_2> - это контроллеры домена, между которыми установлены соглашения о репликации

10. Проверка наличия атрибутов ``envvar`` и ``ipaLocation``. Выполняется на первом контроллере домена и на резервных:

.. code-block:: bash

   ldapsearch -b "cn=masters,cn=ipa,cn=etc,dc=aldpro,dc=company,dc=lan" -s one ipaLocation envvar

11. Перезагрузка КД с последующей экспресс-проверкой работы служб (повторить пункты 1 и 2 данного раздела). Выполняется непосредственно перед началом обновления первого или резервных контроллеров домена.

Обновление
----------

Для установки обновления **ALD Pro** на первом контроллере домена необходимо подключить репозиторий **aldpro**, выполнив в терминале команды:

.. code-block:: bash

   sudo nano /etc/apt/sources.list.d/aldpro.list

Полностью заменить содержимое файла ``aldpro.list``:

.. code-block:: bash

   deb https://dl.astralinux.ru/aldpro/frozen/01/3.1.0/ 1.7_x86-64 main base

Обновить индекс пакетов, выполнив в терминале команду:

.. code-block:: bash

   sudo apt update

Обновить пакеты продукта **ALD Pro** командой:

.. code-block:: bash

   sudo apt dist-upgrade -y -o Dpkg::Options::=--force-confnew

В процессе выполнения обновления, при появлении сообщения с подтверждением изменения файла настройки пакета, необходимо выбрать **Установить версию, предлагаемую сопровождающим пакета**, введя в командной строке **Y**.

Перезагрузить контроллер, выполнив в терминале команду:

.. code-block:: bash

   sudo reboot

После перезагрузки первого контроллера домена и проверки статуса прохождения аутентификации, для завершения обновления первого контроллера домена в терминале выполнить команды:

.. code-block:: bash

   sudo aldpro-server-install -d ald.company.lan -n dc-1 --ip 10.0.1.11 --update --setup_syncer --setup_gc

где:

* ``-d`` (domain) — имя домена;
* ``-n`` (name) — имя сервера;
* ``-p`` (password) — получить пароль администратора домена из командной строки (небезопасно);
* ``--ip`` — ip адрес контроллера домена. Адрес требуется указывать явно, если на контроллере домена активно несколько сетевых интерфейсов;
* ``--update`` — ключ запуска процесса обновления;
* ``--setup_gc`` — ключ указывает, что нужно настроить установленный ранее модуль глобального каталога;
* ``--setup_syncer`` — ключ указывает, что нужно настроить установленный ранее модуль синхронизации.

Описание параметров скрипта можно получить с помощью ключа ``-h``.

После ввода команды система запросит ввести пароль администратора домена. При обновлении контроллера домена ALD Pro до версии 3.1.0, с ранее установленным модулем синхронизации, процесс миграции базы данных (БД) может занять продолжительное время. Если БД содержит 30000 пользователей и более, то рекомендуется сначала обновить ALD Pro, затем, выбрав отдельный интервал профилактики, обновить модуль синхронизации, согласно :ref:`syncer_update`.

Если требуется произвести обновление ALD Pro с одновременной инициализацией ранее неустановленного модуля глобального каталога и/или модуля синхронизации, то следует обратиться к соответствующим разделам :ref:`gc_update` и :ref:`syncer_update`.

Ошибки, которые могут возникнуть при обновлении системы, описаны в разделе **Руководство администратора. Часть 2** → **Известные проблемы**.

.. _check_after_update:

Проверки, которые необходимо выполнить после обновления
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

После завершения обновления системы необходимо выполнить следующие проверки, чтобы убедиться, что обновление выполнено корректно и **ALD Pro** готов к работе.

1. Проверить информацию на карточке КД (**Управление доменом** → **Сайты и службы** → **Контроллеры домена** или **Управление доменом** → **Общая информация** → **Состав системы**). Если КД находится в состоянии **Установлено**, **Ошибка**, не указана версия, то изучить логи:

- */var/log/ipaupgrade.log* - первый КД,
- */var/log/aldpro-salt/subsystem.log* - резервные контроллеры домена.

2. Проверить функционирование основных служб ``dirsrv@DC-1-ALDPRO-LAN.service, krb5-kdc, bind9-pkcs11, sssd, aldpro-salt-minion``. Название службы ``dirsrv@DC-1-ALDPRO-LAN.servie`` содержит имя домена.

.. code-block:: bash

   systemctl status dirsrv@DC-1-ALDPRO-LAN.service krb5-kdc bind9-pkcs11 sssd aldpro-salt-minion
   ipactl status
   aldproctl status

3. Остановить и замаскировать службу ``salt-minion``, если она не используется:

.. code-block:: bash

   systemctl stop salt-minion
   systemctl disable salt-minion
   systemctl mask salt-minion

4. Проверить наличие конфликтов репликации **LDAP**:

.. code-block:: bash

   dsconf ldap://<имя_КД> -D 'cn=Directory Manager' repl-conflict list <доменный суффикс>

5. Проверить работоспособность ролевой модели. Проверка осуществляется в портале управления путем просмотра списка ролей и их статуса, назначения роли или ролей пользователю с последующей проверкой доступа к разделам портала. Наличие конфликтов у записей в **LDAP**, имеющих отношение к ролям, привилегиям или разрешениям, также сигнализирует о возможных ошибках в функционировании ролевой модели. Если на первом КД ролевая модель работает, то на резервных контроллерах домена проверку можно осуществлять сравнением данных этого резервного контроллера домена с первым КД (``ds-replcheck``).

6. Обновить модуль синхронизации и проверить миграцию данных (идентификаторы участников групп (должны быть ``ObjectGUID`` из **MS AD**), список ошибок до обновления и миграции и после) -- выполняется только на первом КД, т.к. модуль синхронизации может быть установлен только на него:

.. code-block:: bash

   sudo -u postgres psql -d syncer -c "SELECT schema_tracer.tracer_objects.name,schema_provider.ipa_code_error.error_message, schema_provider.ipa_code_error.error_name, schema_provider.virtual_tree.error_id, COUNT(*) FROM schema_provider.virtual_tree JOIN schema_provider.ipa_code_error ON schema_provider.virtual_tree.error_id =  schema_provider.ipa_code_error.id JOIN schema_tracer.tracer_objects ON schema_provider.virtual_tree.object_class_id = schema_tracer.tracer_objects.id WHERE error_id <> 90  GROUP BY schema_tracer.tracer_objects.id,schema_provider.ipa_code_error.error_message, schema_provider.ipa_code_error.error_name, schema_provider.virtual_tree.error_id ORDER BY schema_tracer.tracer_objects.name;"

.. _gc_update:

Обновление с установкой Глобального Каталога
------------------------------------------------------------------

При необходимости инициализации модуля глобального каталога одновременно с обновлением **ALD Pro** на первом контроллере домена, необходимо предварительно установить пакет глобального каталога из репозитория **ALD Pro** и добавить ключ  ``--setup_gc`` в команду обновления ``aldpro-server-install``.

Команда обновления контроллера домена с инициализацией модуля ГК:

.. code-block:: bash

   sudo apt update && sudo apt install aldpro-gc
   sudo aldpro-server-install -d ald.company.lan -n dc-1 --ip 10.0.1.11 --update --setup_gc

После ввода команды система запросит ввести пароль администратора домена.

.. _syncer_update:

Обновление с установкой Модуля Синхронизации
------------------------------------------------------------------

При необходимости инициализации модуля синхронизации одновременно с обновлением **ALD Pro** на первом контроллере домена, необходимо предварительно установить пакет модуля синхронизации из репозитория **ALD Pro** и добавить ключ  ``--setup_syncer`` в команду обновления ``aldpro-server-install``.

Модуль синхронизации всегда устанавливается на первый контроллер домена. При установке модуля синхронизации контроллер домена **ALD Pro** добавляется в карточку **Контроллеры домена ALD** автоматически.

При установке модуля синхронизации создается учетная запись имеющая вид ``syncer/dc01.<имя домена>@<ИМЯ ДОМЕНА>``. Данная УЗ является сервисной и используется для работы модуля синхронизации. Пароль данной УЗ является бессрочным, что делает работу модуля синхронизации более стабильной и устойчивой.

Команда обновления контроллера домена с инициализацией модуля синхронизации:

.. code-block:: bash
    
   sudo apt update && sudo apt install aldpro-syncer
   sudo aldpro-server-install -d ald.company.lan -n dc-1 --ip 10.0.1.11 --update --setup_syncer

После ввода команды система запросит ввести пароль администратора домена.